{"version":3,"file":"static/chunks/pages/shelters/[slug]/[id]-21959f033da3d351.js","mappings":"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","sources":["webpack://_N_E/?e769","webpack://_N_E/./core--client--components/src/components/atoms/AnimateItem/AnimateItem.tsx","webpack://_N_E/./core--client--components/src/components/atoms/ButtonLink/ButtonLink.tsx","webpack://_N_E/./core--client--components/src/lib/loaders/contentfulImageLoader.ts","webpack://_N_E/./src/components/molecules/ContactOrganization/ContactOrganization.tsx","webpack://_N_E/./src/components/molecules/CardArticle/CardArticle.tsx","webpack://_N_E/./src/components/organisms/ArticlesDisplay/ArticlesDisplay.tsx","webpack://_N_E/./src/components/organisms/PageWrapper/PageWrapper.tsx","webpack://_N_E/./src/components/organisms/ShelterContactInformation/ShelterContactInformation.tsx","webpack://_N_E/./src/lib/constants/constants/articles.ts","webpack://_N_E/./src/lib/constants/constants/pets.ts","webpack://_N_E/./src/lib/dataSource/content/content-base.ts","webpack://_N_E/./src/lib/dataSource/content/article.ts","webpack://_N_E/./src/lib/dataSource/location/getLocationLabel.ts","webpack://_N_E/./src/lib/dataSource/lostApi/common.ts","webpack://_N_E/./src/lib/utils/formatters/formatPhoneNumber.ts","webpack://_N_E/./src/lib/utils/getPetUrlPath/getPetUrlPath.ts","webpack://_N_E/./src/lib/utils/helpers/ObjectsHelpers/AppendAttributeIfExists.ts","webpack://_N_E/./core--client--components/src/lib/dataSource/contentful/client.ts","webpack://_N_E/./src/components/molecules/ShelterPageTitle/ShelterPageTitle.tsx","webpack://_N_E/./src/components/templates/ShelterDetailsTemplate/ShelterDetailsTemplate.tsx","webpack://_N_E/./src/lib/constants/constants/us-states.ts","webpack://_N_E/./src/lib/dataSource/location/abbreviateAddress.ts","webpack://_N_E/./src/lib/dataSource/lostApi/awo/legacyContext/legacyId.ts","webpack://_N_E/./src/lib/utils/helpers/legacy/hexadecimalToString.ts","webpack://_N_E/./src/pages/shelters/[slug]/[id]/index.tsx","webpack://_N_E/<anon>"],"sourcesContent":["\n    (window.__NEXT_P = window.__NEXT_P || []).push([\n      \"/shelters/[slug]/[id]\",\n      function () {\n        return require(\"private-next-pages/shelters/[slug]/[id]/index.tsx\");\n      }\n    ]);\n    if(module.hot) {\n      module.hot.dispose(function () {\n        window.__NEXT_P.push([\"/shelters/[slug]/[id]\"])\n      });\n    }\n  ","import {\n  Variant,\n  cubicBezier,\n  motion,\n  useAnimation,\n  useInView,\n} from 'framer-motion';\nimport { useEffect, useRef } from 'react';\n\n/**\n * AnimateItem Props\n *\n * @interface IAnimateItem\n */\nexport interface IAnimateItem {\n  /**\n   * Children to animate\n   *\n   * @memberof IAnimateItem\n   * @member {React.ReactNode} children\n   */\n  children: React.ReactNode;\n  /**\n   * From variant\n   *\n   * @memberof IAnimateItem\n   * @member {Variant} [from]\n   */\n  from?: Variant;\n  /**\n   * To variant\n   *\n   * @memberof IAnimateItem\n   * @member {Variant} [to]\n   */\n  to?: Variant;\n  /**\n   * Delay\n   *\n   * @memberof IAnimateItem\n   * @default 0.2\n   * @member {number} [delay]\n   */\n  delay?: number;\n  /**\n   * Duration\n   *\n   * @memberof IAnimateItem\n   * @default 0.9\n   * @member {number} [duration]\n   */\n  duration?: number;\n  /**\n   * Classes\n   *\n   * @memberof IAnimateItem\n   * @default ''\n   * @member {string} [className]\n   */\n  className?: string;\n}\n\n/**\n * AnimateItem\n *\n * @param {IAnimateItem} props - Props\n * @returns {React.ReactNode} - AnimateItem\n */\nconst AnimateItem: React.FC<IAnimateItem> = ({\n  children,\n  from,\n  to,\n  delay = 0.2,\n  duration = 0.9,\n  className = '',\n}: IAnimateItem) => {\n  const ref = useRef(null);\n  const controls = useAnimation();\n  const inView = useInView(ref);\n\n  useEffect(() => {\n    if (inView) {\n      controls.start('visible');\n    }\n  }, [controls, inView]);\n\n  return (\n    <motion.div\n      className={className}\n      ref={ref}\n      initial={'hidden'}\n      animate={controls}\n      variants={{\n        hidden: {\n          opacity: 0,\n          ...from,\n        },\n        visible: {\n          opacity: 1,\n          scale: 1,\n          translateX: 0,\n          translateY: 0,\n          transition: {\n            delay: delay,\n            duration: duration,\n            ease: cubicBezier(0.17, 0.55, 0.55, 1),\n          },\n          ...to,\n        },\n      }}\n      data-testid=\"animate-item\"\n    >\n      {children}\n    </motion.div>\n  );\n};\n\nexport default AnimateItem;\n","import Link, { LinkProps } from 'next/link';\nimport React, { HTMLProps, Ref } from 'react';\n\n/**\n * IButtonLink Interface for the ButtonLink component\n *\n * @interface\n */\nexport interface IButtonLink {\n  /**\n   * The version of the button to display either light or dark\n   *\n   * @memberof IButtonLink\n   * @member {'light' | 'dark'} variant\n   */\n  variant: 'light' | 'dark' | 'lightBlue' | 'pink';\n  /**\n   * Whether the button is disabled\n   *\n   * @memberof IButtonLink\n   * @default false\n   * @member {boolean} [disabled]\n   */\n  disabled?: boolean;\n  /**\n   * The target of the link\n   *\n   * @memberof IButtonLink\n   * @member {string} [target]\n   */\n  target?: string;\n  /**\n   * The children of the button\n   *\n   * @memberof IButtonLink\n   * @member {string} children\n   */\n  children: string;\n  /**\n   * The color scheme used for the button link\n   *\n   * @memberof IButtonLink\n   * @default 'primary'\n   * @member {'primary' | 'secondary' | 'tertiary'} [color]\n   */\n  color?: 'primary' | 'secondary' | 'tertiary';\n  /**\n   * The ref of the button link\n   *\n   * @memberof IButtonLink\n   * @member {Ref<HTMLAnchorElement>} [ref]\n   */\n  ref?: Ref<HTMLAnchorElement>;\n  /**\n   * The className of the button link\n   *\n   * @memberof IButtonLink\n   * @default ''\n   * @member {string} [className]\n   */\n  className?: string;\n}\n\n/**\n * Button Link Props\n *\n * @typedef ButtonLinkProps\n */\nexport type ButtonLinkProps = IButtonLink &\n  LinkProps &\n  HTMLProps<HTMLAnchorElement>;\n\n/**\n * Button Base Font Properties This is the base font properties for the button.\n *\n * @constant {string} baseFont\n */\nconst baseFont =\n  'font-petco text-base font-bold border-b-[3px] pb-1.5 border-b-solid focus:ring-invisible transition-colors duration-200 ease-in-out';\n\n/**\n * Variant Classes Map This map is used to map the variant prop to the\n * appropriate tailwind classes.\n *\n * @constant {Record<string, Record<string, string>>} variantClasses\n */\nconst variantClasses = {\n  primary: {\n    light:\n      'text-secondaryBase-400 border-base-300 hover:text-base-300 hover:border-base-300',\n    dark: 'text-neutral-100 border-neutral-100 hover:text-base-300 hover:border-base-300',\n    lightBlue:\n      'text-mkNavy-400 border-mkLightBlue-400 hover:text-mkNavy-400 hover:border-mkNavy-400',\n    pink: 'text-mkNavy-400 border-mkPink-400 hover:text-mkNavy-400 hover:border-mkNavy-400',\n  },\n  secondary: {\n    light:\n      'text-secondaryBase-400 border-mkPink-400 hover:text-secondaryBase-400 hover:border-secondaryBase-400',\n    dark: 'text-mkPink-400 border-mkPink-400 hover:text-neutral-100 hover:border-neutral-100',\n    lightBlue:\n      'text-mkNavy-400 border-mkLightBlue-400 hover:text-mkNavy-400 hover:border-mkNavy-400',\n    pink: 'text-mkNavy-400 border-mkPink-400 hover:text-mkNavy-400 hover:border-mkNavy-400',\n  },\n  tertiary: {\n    light:\n      'text-secondaryBase-400 border-mkLightBlue-400 hover:text-secondaryBase-400 hover:border-secondaryBase-400',\n    dark: 'text-mkLightBlue-400 border-mkLightBlue-400 hover:text-neutral-100 hover:border-neutral-100',\n    lightBlue:\n      'text-mkNavy-400 border-mkLightBlue-400 hover:text-mkNavy-400 hover:border-mkNavy-400',\n    pink: 'text-mkNavy-400 border-mkPink-400 hover:text-mkNavy-400 hover:border-mkNavy-400',\n  },\n};\n\n/**\n * Wrapper Focus Styles This is the focus styles for the button.\n *\n * @constant {string} wrapperFocusStyles\n */\nconst wrapperFocusStyles =\n  'focus-visible:ring-1 focus-visible:ring-focus-400 focus-visible:rounded focus-visible:ring-offset-4 focus-visible:outline-0 focus-visible:outline-transparent';\n\n/**\n * Link Disabled Styles This is the disabled styles for the button.\n *\n * @constant {Record<string, string>} disabledStyles\n */\nconst disabledStyles = {\n  light: 'text-neutral-500 border-neutral-500 cursor-not-allowed',\n  dark: 'text-neutral-300 border-neutral-300 cursor-not-allowed',\n  lightBlue:\n    'text-neutral-400 border-neutral-400 hover:text-neutral-400 hover:border-neutral-400 cursor-not-allowed',\n  pink: 'text-neutral-400 border-neutral-400 hover:text-neutral-400 hover:border-neutral-400 cursor-not-allowed',\n};\n\n/**\n * Remove Focus Styles This is the focus styles for the button.\n *\n * @constant {string} removeFocusStyles\n */\nconst removeFocusStyles =\n  'focus:outline-none focus:ring-0 focus-visible:ring-0 focus-visible:outline-none';\n\n/**\n * ButtonLink - A button used to navigate to a different page.\n *\n * @param {IButtonLink} props - The props for the ButtonLink component\n * @returns {React.FC<ButtonLinkProps>} Button Link Component\n */\nconst ButtonLink: React.FC<ButtonLinkProps> = ({\n  variant,\n  href,\n  as,\n  disabled = false,\n  children,\n  replace,\n  scroll,\n  shallow,\n  passHref,\n  className = '',\n  color = 'primary',\n  ...rest\n}: ButtonLinkProps) => {\n  const variantStyles = disabled\n    ? disabledStyles[variant]\n    : variantClasses[color][variant];\n  const cls = `${baseFont} ${variantStyles} ${wrapperFocusStyles}`;\n  const dataTestId = `button-link-${variant}-${disabled}`;\n\n  return (\n    <div\n      className={`${className} ${removeFocusStyles}`}\n      data-testid={dataTestId}\n    >\n      <Link\n        href={href}\n        as={as}\n        passHref={passHref}\n        replace={replace}\n        scroll={scroll}\n        shallow={shallow}\n        className={`${cls} ${removeFocusStyles}`}\n        {...rest}\n      >\n        {children}\n      </Link>\n    </div>\n  );\n};\n\nexport default ButtonLink;\n","import { ImageLoaderProps } from \"next/legacy/image\";\n\n/**\n * Loads images from the CDN\n *\n * @param {ImageLoaderProps} params- Image loader props\n * @returns {string} - Image URL\n */\nfunction contentFulImageLoader({\n  src,\n  width,\n  quality,\n}: ImageLoaderProps): string {\n  if (quality) {\n    return `${src}?q=${quality}&w=${width}&fm=webp`;\n  } else {\n    return `${src}?w=${width}&fm=webp`;\n  }\n}\n\nexport default contentFulImageLoader;\n","import Icon, { IconType } from '@/components/atoms/Icon/Icon';\nimport formatPhoneNumber from '@/lib/utils/formatters/formatPhoneNumber';\n\n/**\n * IContactOrganization Interface for the ContactOrganization Component\n *\n * @interface IContactOrganization\n */\nexport interface IContactOrganization {\n  /**\n   * The full address of the organization\n   *\n   * @memberof IContactOrganization\n   * @member {string} [address]\n   */\n  address?: string;\n  /**\n   * The email address of the organization\n   *\n   * @memberof IContactOrganization\n   * @member {string} [email]\n   */\n  email?: string;\n  /**\n   * The phone number of the organization\n   *\n   * @memberof IContactOrganization\n   * @member {string} [phone]\n   */\n  phone?: string;\n  /**\n   * The website of the organization\n   *\n   * @memberof IContactOrganization\n   * @member {string} [website]\n   */\n  website?: string;\n  /**\n   * The type of organization ie Shelter / Rescue\n   *\n   * @memberof IContactOrganization\n   * @default 'Shelter'\n   * @member {string} [organizationType]\n   */\n  organizationType?: string;\n  /**\n   * The subject of the email\n   *\n   * @memberof IContactOrganization\n   * @default 'Petco Love Lost Inquiry'\n   * @member {string} [emailSubject]\n   */\n  emailSubject?: string;\n  /**\n   * The optional classes for the component.\n   *\n   * @memberof IContactOrganization\n   * @default ''\n   * @member {string} [classes]\n   */\n  classes?: string;\n}\n\n/**\n * ContactOrganization A component to display out the contact options for an\n * organization\n *\n * @param {IContactOrganization} props - The props for the ContactOrganization\n * @returns {React.FC<IContactOrganization>} ContactOrganization Component\n */\nconst ContactOrganization: React.FC<IContactOrganization> = ({\n  address,\n  email,\n  phone,\n  emailSubject = 'Petco Love Lost Inquiry',\n  website,\n  classes = '',\n}: IContactOrganization) => {\n  const formattedPhone = (() => {\n    if (!phone) {\n      return '';\n    }\n\n    if (/[()-]/.test(phone)) {\n      return phone;\n    }\n\n    return formatPhoneNumber(phone);\n  })();\n\n  return (\n    <div\n      className={`h-auto space-y-4 ${classes}`}\n      data-testid=\"contact-organization\"\n    >\n      {website && (\n        <div className=\"flex items-center\">\n          <IconButton\n            testid=\"contact-organization-website\"\n            label={website}\n            icon=\"globeLarge\"\n            onClick={() => {\n              window.open(website);\n            }}\n          />\n        </div>\n      )}\n\n      {formattedPhone && (\n        <div className=\"flex items-center\">\n          <IconButton\n            testid=\"contact-organization-phone\"\n            label={formattedPhone}\n            icon=\"phone\"\n            onClick={() => {\n              window.open(`tel:${formattedPhone}`);\n            }}\n          />\n        </div>\n      )}\n\n      {email && (\n        <div className=\"flex items-center\">\n          <IconButton\n            testid=\"contact-organization-email\"\n            label={email}\n            icon=\"envelopeLight\"\n            onClick={() => {\n              window.open(`mailto:${email}?subject=${emailSubject}`);\n            }}\n          />\n        </div>\n      )}\n\n      {address && (\n        <div className=\"flex items-center\">\n          <IconButton\n            testid=\"contact-organization-address\"\n            label={address}\n            icon=\"pin\"\n            onClick={() => {\n              window.open(\n                `https://www.google.com/maps/search/?api=1&query=${address}`\n              );\n            }}\n          />\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default ContactOrganization;\n\n/**\n * IIconButtonProps Interface for the IconButton Component\n *\n * @interface IIconButton\n */\ninterface IIconButton {\n  /**\n   * Button label\n   *\n   * @memberof IIconButton\n   * @member {string} label\n   */\n  label: string;\n  /**\n   * Button icon\n   *\n   * @memberof IIconButton\n   * @member {IconType} icon\n   */\n  icon: IconType;\n  /**\n   * Button onClick event handler\n   *\n   * @memberof IIconButton\n   * @member {() => void} onClick\n   */\n  onClick: () => void;\n  /**\n   * Button testid\n   *\n   * @memberof IIconButton\n   * @member {string} testid\n   */\n  testid: string;\n}\n\n/**\n * IconButton\n *\n * @param {IIconButton} props - The props for the IconButton\n * @returns {React.ReactComponentElement.Node} IconButton Component\n */\nfunction IconButton({ label, icon, onClick, testid }: IIconButton) {\n  return (\n    <button\n      className=\"text-neutral-800 hover:text-base-300 hover:[&>span]:text-base-300 flex items-center gap-1.5 text-left\"\n      onClick={onClick}\n      data-testid={testid}\n    >\n      <Icon icon={icon} size={24} />\n\n      <span className=\"underline\">{label}</span>\n    </button>\n  );\n}\n","import Paragraph from '@/components/atoms/Paragraph/Paragraph';\n\nimport Image, { ImageLoader } from 'next/legacy/image';\nimport Link from 'next/link';\n\n/**\n * ICardArticle Interface for the Card Article Component\n *\n * @interface ICardArticle\n */\nexport interface ICardArticle {\n  /**\n   * Title of the Article for the Card\n   *\n   * @memberof ICardArticle\n   * @member {string} title\n   */\n  title: string;\n  /**\n   * The Excerpt of the Article to Display\n   *\n   * @memberof ICardArticle\n   * @member {string} excerpt\n   */\n  excerpt: string;\n  /**\n   * The Image of the Article to display\n   *\n   * @memberof ICardArticle\n   * @member {string} image\n   */\n  image: string;\n  /**\n   * The optional classes for the component\n   *\n   * @memberof ICardArticle\n   * @default ''\n   * @member {string} [classes]\n   */\n  classes?: string;\n  /**\n   * The optional imageClasses for the component\n   *\n   * @memberof ICardArticle\n   * @default ''\n   * @member {string} [imageClasses]\n   */\n  imageClasses?: string;\n  /**\n   * Url of the article to link to\n   *\n   * @memberof ICardArticle\n   * @member {string} url\n   */\n  url: string;\n  /**\n   * The optional target for the url\n   *\n   * @memberof ICardArticle\n   * @default '_self'\n   * @member {'_blank' | '_self' | '_parent' | '_top'} [target]\n   */\n  target?: '_blank' | '_self' | '_parent' | '_top';\n  /**\n   * The loader function for the image\n   *\n   * @memberof ICardArticle\n   * @member {ImageLoader} [loader]\n   */\n  loader?: ImageLoader;\n}\n\n/**\n * Card Article The Card Article Component that links to an url and displays an\n * image, title and excerpt\n *\n * @param {ICardArticle} props - The props for the Card Article Component\n * @returns {React.FC<ICardArticle>} Card Article Component\n */\nconst CardArticle: React.FC<ICardArticle> = ({\n  title,\n  excerpt,\n  image,\n  classes = '',\n  url,\n  imageClasses = '',\n  target = '_self',\n  loader,\n}: ICardArticle) => {\n  return (\n    <div\n      data-testid=\"card-article\"\n      className={`w-full cursor-pointer [&:has(:focus-visible)]:ring-1 [&:has(:focus-visible)]:ring-focus-400 sm:rounded-[20px] md:rounded-3xl ${classes}`}\n    >\n      <Link\n        href={url}\n        className=\"w-full focus:ring-0 focus:ring-offset-0 focus-visible:ring-offset-0 focus-visible:ring-0 focus-visible:border-none focus-visible:outline-none\"\n        target={target}\n      >\n        <div\n          className={`h-[218px] sm:h-[140px] md:h-72 relative rounded-2xl sm:rounded-[20px] md:rounded-3xl flex overflow-hidden ${imageClasses}`}\n        >\n          <Image\n            data-testid=\"card-article-image\"\n            src={image}\n            layout=\"fill\"\n            alt={`Image of ${title}`}\n            objectFit=\"cover\"\n            className=\"scale-100 hover:scale-[102%] transition-transform duration-100\"\n            loader={loader}\n            sizes=\"(max-width: 739px) 100vw, (max-width: 1199px) 33vw, 450px\"\n          />\n        </div>\n        <div className=\"w-full mt-4 md:mt-6\">\n          <span className=\"font-bold font-petco text-h5 text-mkNavy-400 line-clamp-2\">\n            {title}\n          </span>\n          <Paragraph size=\"body4\" className=\"mt-3 font-petco line-clamp-2\">\n            {excerpt}\n          </Paragraph>\n        </div>\n      </Link>\n    </div>\n  );\n};\n\nexport default CardArticle;\n","import contentFulImageLoader from '@/component-library-lib/loaders/contentfulImageLoader';\nimport AnimateItem from '@/component-library/atoms/AnimateItem/AnimateItem';\nimport ButtonLink, {\n  IButtonLink,\n} from '@/component-library/atoms/ButtonLink/ButtonLink';\nimport Heading from '@/components/atoms/Heading/Heading';\nimport CardArticle, {\n  ICardArticle,\n} from '@/components/molecules/CardArticle/CardArticle';\n\n/**\n * IButtonLinkWithHref Interface for a Button link with a href\n *\n * @augments IButtonLink\n * @interface IButtonLinkWithHref\n */\nexport interface IButtonLinkWithHref extends IButtonLink {\n  /**\n   * The button link url\n   *\n   * @memberof IButtonLinkWithHref\n   * @member {string} href\n   */\n  href: string;\n}\n\n/**\n * IArticlesDisplay Interface for ArticlesDisplay component\n *\n * @interface IArticlesDisplay\n */\nexport interface IArticlesDisplay {\n  /**\n   * The title of the articles display.\n   *\n   * @memberof IArticlesDisplay\n   * @member {string} title\n   */\n  title: string;\n  /**\n   * An array of card articles to display.\n   *\n   * @memberof IArticlesDisplay\n   * @member {ICardArticle[]} articles\n   */\n  articles: ICardArticle[];\n  /**\n   * The optional button link.\n   *\n   * @memberof IArticlesDisplay\n   * @member {IButtonLinkWithHref} [buttonLink]\n   */\n  buttonLink?: IButtonLinkWithHref;\n  /**\n   * The optional classes to be applied to the component.\n   *\n   * @memberof IArticlesDisplay\n   * @default ''\n   * @member {string} [classes]\n   */\n  classes?: string;\n  /**\n   * The optional imageClasses to be applied to the image inside a card.\n   *\n   * @memberof IArticlesDisplay\n   * @default ''\n   * @member {string} [imageClasses]\n   */\n  imageClasses?: string;\n}\n\n/**\n * ArticlesDisplay Organism for displaying articles\n *\n * @param {IArticlesDisplay} props - The props for the ArticlesDisplay component\n * @returns {React.FC<IArticlesDisplay>} ArticlesDisplay Component\n */\nconst ArticlesDisplay: React.FC<IArticlesDisplay> = ({\n  title,\n  articles,\n  buttonLink,\n  classes = '',\n  imageClasses = '',\n}: IArticlesDisplay) => {\n  return (\n    <div\n      data-testid=\"articles-display\"\n      className={`max-w-[1360px] mx-auto ${classes}`}\n    >\n      <AnimateItem from={{ translateY: 20 }}>\n        <div className=\"flex flex-col justify-between mb-8 space-y-4 sm:flex-row sm:space-y-0 sm:items-center md:mb-12\">\n          <Heading size=\"h3\" font=\"petco\" className=\"text-secondaryBase-400 \">\n            {title}\n          </Heading>\n          {buttonLink && <ButtonLink {...buttonLink} />}\n        </div>\n      </AnimateItem>\n      {articles && (\n        <div className=\"grid sm:grid-cols-3 grid-cols-1 md:gap-x-8 gap-6\">\n          {articles.map((article, index) => (\n            <div className=\"flex items-center justify-stretch\" key={index}>\n              <CardArticle\n                {...article}\n                imageClasses={imageClasses}\n                loader={contentFulImageLoader}\n              />\n            </div>\n          ))}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default ArticlesDisplay;\n","import { ReactNode } from 'react';\n\n/**\n * IPageWrapper\n *\n * @interface IPageWrapper\n */\nexport interface IPageWrapper {\n  /**\n   * The content of the page.\n   *\n   * @memberof IPageWrapper\n   * @member {ReactNode} children\n   */\n  children: ReactNode;\n  /**\n   * The classes to apply to the component.\n   *\n   * @memberof IPageWrapper\n   * @default ''\n   * @member {string} [classes]\n   */\n  classes?: string;\n}\n\n/**\n * Page Wrapper Used to wrap the entire page in a fixed size container.\n *\n * @param {IPageWrapper} props - The props for the PageWrapper component\n * @returns {React.FC<IPageWrapper>} PageWrapper Component\n */\nconst PageWrapper: React.FC<IPageWrapper> = ({\n  children,\n  classes = '',\n}: IPageWrapper) => {\n  return <div className={`max-w-[1440px] mx-auto ${classes}`}>{children}</div>;\n};\n\nexport default PageWrapper;\n","import Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport ContactOrganization from '@/components/molecules/ContactOrganization/ContactOrganization';\n\n/**\n * IShelterContactInformation\n *\n * @interface IShelterContactInformation\n */\nexport interface IShelterContactInformation {\n  /**\n   * The overline text to display.\n   *\n   * @memberof IShelterContactInformation\n   * @member {string} [overline]\n   */\n  overline?: string;\n  /**\n   * The name of the shelter.\n   *\n   * @memberof IShelterContactInformation\n   * @member {string} name\n   */\n  name: string;\n  /**\n   * The phone number of the shelter.\n   *\n   * @memberof IShelterContactInformation\n   * @member {string} [phone]\n   */\n  phone?: string;\n  /**\n   * The email of the shelter.\n   *\n   * @memberof IShelterContactInformation\n   * @member {string} [email]\n   */\n  email?: string;\n  /**\n   * The address of the shelter.\n   *\n   * @memberof IShelterContactInformation\n   * @member {string} [address]\n   */\n  address?: string;\n  /**\n   * The website of the shelter\n   *\n   * @memberof IShelterContactInformation\n   * @member {string} [website]\n   */\n  website?: string;\n  /**\n   * The optional classes to apply to the component.\n   *\n   * @memberof IShelterContactInformation\n   * @default ''\n   * @member {string} [classes]\n   */\n  classes?: string;\n}\n\n/**\n * ShelterContactInformation An organism used to display out all of the\n * Shelter's Contact Information\n *\n * @param {IShelterContactInformation} props - The props for the\n *   ShelterContactInformation component\n * @returns {React.FC<IShelterContactInformation>} ShelterContactInformation\n *   Component\n */\nconst ShelterContactInformation: React.FC<IShelterContactInformation> = ({\n  overline,\n  name,\n  phone,\n  email,\n  website,\n  address,\n  classes = '',\n}: IShelterContactInformation) => {\n  return (\n    <div\n      data-testid=\"shelter-contact-information\"\n      className={`py-10 sm:py-12 md:py-16 border-y-[1px] border-y-neutral-300 border-y-solid ${classes}`}\n    >\n      <div className=\"text-center mx-auto sm:max-w-2/3\">\n        {overline && (\n          <Paragraph size=\"overline\" font=\"petco\" className=\"mb-1\">\n            {overline}\n          </Paragraph>\n        )}\n        <Paragraph\n          size=\"body1\"\n          styling=\"bold\"\n          font=\"petco\"\n          className=\"mb-6 md:mb-8\"\n        >\n          {name}\n        </Paragraph>\n      </div>\n      <ContactOrganization\n        phone={phone}\n        email={email}\n        address={address}\n        website={website}\n        classes=\"flex flex-col justify-center items-center\"\n      />\n    </div>\n  );\n};\n\nexport default ShelterContactInformation;\n","/**\n * Array of the article slug names to display in the shelter details page\n *\n * @constant {string[]}\n */\nexport const shelterDetailsArticlesSlugNames = [\n  'lost-dog-reunites-with-best-friend',\n  'how-to-care-for-your-lost-cat-after-they-come-home',\n  'how-to-help-lost-and-found-pets-near-me',\n];\n\n/**\n * The article slug names for the found search; If the user is searching for\n * FOUND pets, that means the user LOST a pet\n *\n * @constant {string[]} foundSearchArticleSlugNames\n */\nexport const foundSearchArticleSlugNames = [\n  'how-to-find-a-lost-dog',\n  'do-lost-pets-find-their-way-home',\n  'how-to-find-a-lost-cat',\n];\n\n/**\n * The article slug names for the lost search; If the user is searching for LOST\n * pets, that means the user FOUND a pet\n *\n * @constant {string[]} lostSearchArticleSlugNames\n */\nexport const lostSearchArticleSlugNames = [\n  'what-to-do-if-you-find-a-lost-cat-or-dog',\n  'how-to-catch-a-shy-lost-dog',\n  'are-stray-cats-and-dogs-potentially-lost-pets',\n];\n\n/**\n * The article slug names for the microchip search page\n *\n * @constant {string[]} microchipSearchArticlesSlugNames\n */\nexport const microchipSearchArticlesSlugNames = [\n  'what-is-a-pet-microchip-and-how-does-it-work',\n  'do-lost-pets-find-their-way-home',\n  'how-to-find-a-lost-cat',\n];\n","import {\n  PetUrlPathOwnerType,\n  PetUrlPathSearchType,\n} from '@/lib/constants/types/pets';\n\n/** Index used for age number */\nlet index = 0;\n\n/**\n * The type of the unknown value of pet dropdown input fields\n *\n * @typedef {string} UnknownValueType\n */\nexport type UnknownValueType = 'unknown';\n\n/**\n * The unknown value for the dropdowns\n *\n * @constant {string} unknownValue\n */\nexport const unknownValue: UnknownValueType = 'unknown';\n\n/** Number Values used for age dropdown */\nconst baseAgeValues = Array.from({ length: 30 }, () => {\n  index++;\n  return {\n    name: `${index} year${index > 1 ? 's' : ''} old`,\n    value: index.toString(),\n  };\n});\n\n/** The unknown value for the pet dropdown */\nexport const petDropdownUnknownValue = {\n  name: 'Unknown',\n  value: unknownValue,\n};\n\n/** All Values used to fill age dropdown */\nexport const ageValues = [\n  petDropdownUnknownValue,\n  { name: '<1', value: '0' },\n  ...baseAgeValues,\n];\n\n/** All Values used to fill pet sex dropdown */\nexport const petSexDropdownValues = [\n  {\n    name: 'Male',\n    value: 'male',\n  },\n  {\n    name: 'Female',\n    value: 'female',\n  },\n  petDropdownUnknownValue,\n];\n\n/** Values used to fill the species dropdown */\nexport const speciesDropdownValues = [\n  {\n    name: 'Dog',\n    value: 'dog',\n  },\n  {\n    name: 'Cat',\n    value: 'cat',\n  },\n];\n\nexport const alteredDropdownValues = [\n  {\n    name: 'Yes',\n    value: 'yes',\n  },\n  {\n    name: 'No',\n    value: 'no',\n  },\n  petDropdownUnknownValue,\n];\n\n/** The search radius options */\nexport const searchRadiusOptions = [\n  { label: '10', value: 10 },\n  { label: '25', value: 25 },\n  { label: '50', value: 50 },\n  { label: '75', value: 75 },\n  { label: '100', value: 100 },\n  { label: '200', value: 200 },\n  { label: 'Unlimited', value: 3000 },\n];\n\n/**\n * The valid pet statuses to allow displaying details for\n *\n * @constant {string[]} validStatus\n */\nexport const validStatus: string[] = ['active'];\n\n/**\n * The valid pet statuses to allow displaying details for\n *\n * @constant {PetUrlPathOwnerType} validStatus - The valid pet statuses to allow\n *   displaying details for\n * @property {string} user - The url path segment for a user pet\n * @property {string} awo - The url path segment for an awo pet\n */\nexport const petUrlPathOwnerTypes: PetUrlPathOwnerType = {\n  user: 'u',\n  awo: 's',\n};\n\n/**\n * The valid url path search types\n *\n * @constant {object} petUrlPathSearchTypes\n * @property {string} lostUserPet - The url path segment for a lost user pet\n *   search type\n * @property {string} foundUserPet - The url path segment for a found user pet\n *   search type\n * @property {string} foundOrgPet - The url path segment for a found org pet\n *   search type\n */\nexport const petUrlPathSearchTypes: PetUrlPathSearchType = {\n  lostUserPet: 'lost',\n  foundUserPet: 'found',\n  foundOrgPet: 'found',\n};\n","/**\n * Content Type Enum for content types\n *\n * @enum\n */\nexport enum ContentType {\n  Article,\n  Author,\n}\n\n/**\n * Content Status Enum for content statuses\n *\n * @enum\n */\nexport enum ContentStatus {\n  Draft,\n  Published,\n}\n\n/**\n * Content Base Abstract Class for Content Types\n *\n * @abstract\n * @class\n * @property {ContentType} type - The type of content\n * @property {ContentStatus} status - The status of the content\n */\nexport default abstract class Content {\n  type: ContentType;\n\n  status: ContentStatus;\n\n  /**\n   * @param {ContentType} type - The type of content\n   * @param {ContentStatus} status - The status of the content\n   */\n  constructor(type: ContentType, status: ContentStatus) {\n    this.type = type;\n    this.status = status;\n  }\n}\n","import { ICardArticle } from '@/components/molecules/CardArticle/CardArticle';\nimport Content, { ContentStatus, ContentType } from './content-base';\n\n/**\n * Article Interface for Article Content Type\n *\n * @interface\n */\nexport interface IContent {\n  /** Title of the Article */\n  title: string;\n  /** Author of the Article */\n  authorName: string;\n  /** Author Slug of the Article */\n  authorSlug: string;\n  /** Date the Article was published */\n  publishedDate: Date;\n  /** Slug of the Article */\n  slug: string;\n  /** Featured Photo of the Article */\n  featuredPhoto: string;\n  /** Body Content of the Article */\n  contentBody: string;\n  /** Excerpt of the Article */\n  excerpt: string;\n  /** Category of the Article */\n  categoryId: string;\n}\n\n/**\n * Article Class for Article Content Type\n *\n * @class\n * @property {string} title - The title of the article\n * @property {Date} publishedDate - The date the article was published\n * @property {string} slug - The slug of the article\n * @property {string} featuredPhoto - The featured photo of the article\n * @property {string} contentBody - The content of the article\n * @requires Content\n */\nexport default class Article extends Content {\n  /**\n   * Title of the Article\n   *\n   * @memberof Article\n   * @member {string} title\n   */\n  title: string;\n\n  /**\n   * Author of the Article\n   *\n   * @memberof Article\n   * @member {string} authorName\n   */\n  authorName: string;\n\n  /**\n   * Author slug of the Article\n   *\n   * @memberof Article\n   * @member {string} authorSlug\n   */\n  authorSlug: string;\n\n  /**\n   * Date the Article was published\n   *\n   * @memberof Article\n   * @member {Date} publishedDate\n   */\n  publishedDate: Date;\n\n  /**\n   * Slug of the Article\n   *\n   * @memberof Article\n   * @member {string} slug\n   */\n  slug: string;\n\n  /**\n   * Featured Photo of the Article\n   *\n   * @memberof Article\n   * @member {string} featuredPhoto\n   */\n  featuredPhoto: string;\n\n  /**\n   * Content Body of the Article\n   *\n   * @memberof Article\n   * @member {string} contentBody\n   */\n  contentBody: string;\n\n  /**\n   * Excerpt of the Article\n   *\n   * @memberof Article\n   * @member {string} excerpt\n   */\n  excerpt: string;\n\n  /**\n   * Category id of the Article\n   *\n   * @memberof Article\n   * @member {string} category\n   */\n  categoryId: string;\n\n  /**\n   * The base path for articles\n   *\n   * @memberof Article\n   * @member {'/articles'} articlesBasePath\n   */\n  articlesBasePath: `/${string}` = '/articles';\n\n  /**\n   * The base path for authors\n   *\n   * @memberof Article\n   * @member {'/author'} authorBasePath\n   */\n  authorBasePath = '/author';\n\n  /**\n   * Article Data Constructor\n   *\n   * @param {IContent} content - The content data\n   */\n  constructor({\n    title,\n    authorName,\n    authorSlug,\n    slug,\n    featuredPhoto,\n    contentBody,\n    excerpt,\n    categoryId,\n    publishedDate,\n  }: IContent) {\n    super(ContentType.Article, ContentStatus.Published);\n\n    this.title = title;\n    this.authorName = authorName;\n    this.authorSlug = authorSlug;\n    this.publishedDate = publishedDate;\n    this.slug = slug;\n    this.contentBody = contentBody;\n    this.excerpt = excerpt;\n    this.featuredPhoto = featuredPhoto;\n    this.categoryId = categoryId;\n  }\n\n  /**\n   * Get Title Returns the Title of the Article\n   *\n   * @returns {string} - Title of the Article\n   */\n  getTitle(): string {\n    return this.title;\n  }\n\n  /**\n   * Get Featured Photo Returns the Featured Photo of the Article\n   *\n   * @returns {string} - Featured Photo URL of the Article\n   */\n  getFeaturedPhoto(): string {\n    return this.featuredPhoto;\n  }\n\n  /**\n   * Get Slug Returns the Slug of the Article\n   *\n   * @returns {string} - Slug of the Article\n   */\n  getSlug(): string {\n    return this.slug;\n  }\n\n  /**\n   * Get Author Link Returns the link to the Author of the Article\n   *\n   * @returns {string} - Author link\n   */\n  getAuthorUrl(): string {\n    return `${this.authorBasePath}/${this.authorSlug}`;\n  }\n\n  /**\n   * Get Content of the Article Returns the Content of the Article\n   *\n   * @returns {string} - Content of the Article\n   */\n  getContent(): string {\n    return this.contentBody;\n  }\n\n  /**\n   * Get Formatted Publication Date of the Article\n   *\n   * @returns {string} - Formatted Publication Date of the Article\n   */\n  getFormattedPublishedDate(): string {\n    const date = new Date(this.publishedDate);\n\n    return date.toLocaleDateString('en-US', {\n      year: 'numeric',\n      month: 'long',\n      day: 'numeric',\n    });\n  }\n\n  /**\n   * Get the article url\n   *\n   * @returns {string} - Url of the Article\n   */\n  getArticleUrl(): `/${string}` {\n    return `${this.articlesBasePath}/${this.slug}`;\n  }\n\n  /**\n   * Get the card article for the Articles Display component\n   *\n   * @returns {string} - Article card of the Article\n   */\n  getCardArticle(): ICardArticle {\n    return {\n      title: this.title,\n      excerpt: this.excerpt,\n      url: this.getArticleUrl(),\n      image: this.featuredPhoto,\n    };\n  }\n}\n","/**\n * Get location label params\n *\n * @interface\n */\ninterface GetLocationLabelParams {\n  /** The location address */\n  address?: string;\n  /** The location zip */\n  zip?: string;\n  /** The location city */\n  city?: string;\n  /** The location state */\n  state?: string;\n  /** The location country */\n  countryCode?: string;\n}\n\n/**\n * Get the place label from the location data\n *\n * @param {GetLocationLabelParams} params - The location data\n * @returns {string} - The place label\n */\nfunction getLocationLabel({\n  address,\n  zip,\n  city,\n  state,\n  countryCode,\n}: GetLocationLabelParams): string {\n  let placeLabel = '';\n\n  const placeLabelItems = [address, city];\n\n  if (state !== undefined && zip !== undefined) {\n    placeLabelItems.push(`${state} ${zip}`);\n  } else if (state !== undefined) {\n    placeLabelItems.push(state);\n  } else if (zip !== undefined) {\n    placeLabelItems.push(zip);\n  }\n  placeLabelItems.push(countryCode);\n\n  placeLabelItems.forEach(\n    /**\n     * Add each item to the place label if it is defined\n     *\n     * @param {string | undefined} item - The item to add to the label\n     * @returns {void}\n     */\n    (item: string | undefined): void => {\n      /**\n       * There is a known issue where a geo-point might not have attached a\n       * address information\n       */\n      if (item === undefined) return;\n\n      /**\n       * If this is the first known item, do not add a comma. Otherwise, add a\n       * comma and the item to the label.\n       */\n      if (placeLabel.length === 0) {\n        placeLabel += item;\n      } else {\n        placeLabel += `, ${item}`;\n      }\n    }\n  );\n\n  return removeCommaAfterDot(placeLabel);\n}\n\n/**\n * Remove comma after dot. This is used to remove the comma right after address\n * abbreviations. As requested on PD-230.\n *\n * Example: 123 Main St., New York becomes \"123 Main St. New York\"\n *\n * @param {string} str - The string to transform.\n * @returns {string} - The transformed string.\n * @see https://petcofoundation.atlassian.net/browse/PD-230?focusedCommentId=29297\n */\nfunction removeCommaAfterDot(str: string) {\n  return str.replace(/\\.,/, '.');\n}\n\nexport default getLocationLabel;\n","import { PetcoLoveSDK } from '@petcolove/lost--client--api-sdk';\n\n/**\n * Initialize the SDK\n *\n * @returns {PetcoLoveSDK} The SDK instance\n */\nexport function initSDK(): PetcoLoveSDK {\n  /**\n   * The PLL API base URL\n   *\n   * @constant {string | undefined} pllApiBaseUrl\n   */\n  const pllApiBaseUrl =\n    process.env.NEXT_PUBLIC_PLL_API_BASE_URL ??\n    process.env.STORYBOOK_PLL_API_BASE_URL;\n  /**\n   * The PLL Websocket base URL\n   *\n   * @constant {string | undefined} pllWebsocketBaseUrl\n   */\n  const pllWebsocketBaseUrl =\n    process.env.NEXT_PUBLIC_PLL_WEBSOCKET_BASE_URL ??\n    process.env.STORYBOOK_PLL_WEBSOCKET_BASE_URL;\n\n  if (!pllApiBaseUrl) {\n    throw new Error('NEXT_PUBLIC_PLL_API_BASE_URL is not defined');\n  }\n\n  if (!pllWebsocketBaseUrl) {\n    throw new Error('NEXT_PUBLIC_PLL_WEBSOCKET_BASE_URL is not defined');\n  }\n\n  const sdk = new PetcoLoveSDK(pllApiBaseUrl, pllWebsocketBaseUrl);\n\n  return sdk;\n}\n\nexport const sdk: PetcoLoveSDK = initSDK();\n","/**\n * Format Value Format the input value based on the pattern passed in\n *\n * @param {string} value - The input value\n * @param {number[]} [pattern=[3, 3, 4]] - The pattern to use for formatting.\n *   Default is `[3, 3, 4]`\n * @returns {void}\n */\nconst formatPhoneNumber = (\n  value: string,\n  pattern: [number, number, number] = [3, 3, 4]\n): string => {\n  /** Replace all non-numeric values from value */\n  const numericValue = value.replace(/\\D/g, '');\n\n  let formattedValue = numericValue;\n\n  if (\n    numericValue.length > pattern[0] &&\n    numericValue.length < pattern[0] + pattern[1] + 1\n  ) {\n    formattedValue =\n      '(' +\n      numericValue.substring(0, pattern[0]) +\n      ') ' +\n      numericValue.substring(pattern[0], numericValue.length);\n  } else if (\n    numericValue.length >= pattern[0] + pattern[1] + 1 &&\n    numericValue.length <= 10\n  ) {\n    formattedValue =\n      '(' +\n      numericValue.substring(0, pattern[0]) +\n      ') ' +\n      numericValue.substring(pattern[0], pattern[0] + pattern[1]) +\n      '-' +\n      numericValue.substring(pattern[0] + pattern[1], numericValue.length);\n  }\n\n  return formattedValue;\n};\n\nexport default formatPhoneNumber;\n","import {\n  petUrlPathOwnerTypes,\n  petUrlPathSearchTypes,\n} from '@/lib/constants/constants/pets';\nimport {\n  ListingTypeKey,\n  PetUrlPathOwnerSegment,\n  SearchType,\n} from '@/lib/constants/types/pets';\nimport getBasePath from '@/lib/utils/getBasePath/getBasePath';\nimport { UserTypes } from '@petcolove/lost--client--api-sdk/dist/concrete/sdks/constants/types';\n\n/**\n * The valid pet url\n *\n * @type {string}\n */\nexport type PetUrl =\n  `${string}/pet/${SearchType}/${PetUrlPathOwnerSegment}/${number}/`;\n\n/**\n * Get the owner type segment from the listing type\n *\n * @param {ListingTypeKey} listingType - The pet listing type\n * @returns {PetUrlPathOwnerSegment} The owner type segment\n */\nconst getOwnerTypeSegment = (\n  listingType: ListingTypeKey\n): PetUrlPathOwnerSegment => {\n  const ownerType: UserTypes = listingType.toLowerCase().includes('user')\n    ? 'user'\n    : 'awo';\n\n  return petUrlPathOwnerTypes[ownerType];\n};\n\n/**\n * Describe the params for the getPetUrl function from a listing type\n *\n * @type {object}\n */\ntype IGetPetUrlFromListingTypeParams = {\n  /** The pet listing type */\n  listingType: ListingTypeKey;\n};\n\n/**\n * Describe the params for the getPetUrl function from a search type and owner\n * type\n *\n * @type {object}\n */\ntype IGetUrlFromSearchTypeAndOwnerParams = {\n  /** The search type */\n  searchType: SearchType;\n  /** The owner type */\n  ownerType: UserTypes;\n};\n\n/**\n * Describe the params for the getPetUrl function\n *\n * @type {object}\n */\ntype GetPetUrlParams = {\n  /** The pet id */\n  id: number;\n  /** Optional flag to include base path in url */\n  excludeBasePath?: boolean;\n} & (IGetPetUrlFromListingTypeParams | IGetUrlFromSearchTypeAndOwnerParams);\n\n/**\n * Get the pet url from the id and listing type\n *\n * @param {GetPetUrlParams} params - The params for the function\n * @returns {string} The pet url\n */\nexport default function getPetUrlPath(params: GetPetUrlParams): PetUrl {\n  /**\n   * The pet id\n   *\n   * @property {number} id - The pet id\n   */\n  const { id, excludeBasePath } = params;\n\n  /** Get the pet url from the listing type */\n  if ('listingType' in params) {\n    const { listingType } = params as IGetPetUrlFromListingTypeParams;\n    /**\n     * The path url segment for the owner type\n     *\n     * @constant {PetUrlPathOwnerSegment} ownerTypeSegment\n     */\n    const ownerTypeSegment = getOwnerTypeSegment(listingType);\n    /**\n     * The path url segment for the search type\n     *\n     * @constant {SearchType} searchTypeSegment\n     */\n    const searchTypeSegment: SearchType = petUrlPathSearchTypes[listingType];\n\n    return `${\n      excludeBasePath ? '' : getBasePath()\n    }/pet/${searchTypeSegment}/${ownerTypeSegment}/${id}/`;\n  }\n  /** Get The pet url from the search type and owner type */\n\n  /**\n   * The path url segment for the owner type\n   *\n   * @property {PetUrlPathOwnerSegment} ownerType - The owner type\n   * @property {SearchType} searchType - The search type\n   */\n  const { searchType: petType, ownerType } =\n    params as IGetUrlFromSearchTypeAndOwnerParams;\n\n  return `${excludeBasePath ? '' : getBasePath()}/pet/${petType}/${\n    petUrlPathOwnerTypes[ownerType]\n  }/${id}/`;\n}\n\n/**\n * Interface for the getPetUrl function\n *\n * @interface IGetPetUrl\n */\nexport interface IGetPetUrl {\n  /**\n   * The pet id\n   *\n   * @memberof IGetPetUrl\n   * @member {string | number} id\n   */\n  id: string | number;\n  /**\n   * The type of the pet\n   *\n   * @memberof IGetPetUrl\n   * @member {'lost' | 'found' | 'sighting'} type\n   */\n  type: 'lost' | 'found' | 'sighting';\n  /**\n   * The owner type of the pet\n   *\n   * @memberof IGetPetUrl\n   * @member {string} [ownerType]\n   */\n  ownerType?: string;\n  /**\n   * The external url of the pet\n   *\n   * @memberof IGetPetUrl\n   * @member {string | null} [url]\n   */\n  url?: string | null;\n  /**\n   * The source of the external url\n   *\n   * @memberof IGetPetUrl\n   * @member {string | null} [source]\n   */\n  source?: string | null;\n}\n\n/**\n * Build URL for different pet types, preferring the incoming external URL for\n * external pets.\n *\n * @param {IGetPetUrl} params - The params for the function\n * @returns {string} - The full pet URL the card will link to\n * @throws {Error} - If the pet has a non-numeric ID and no external URL\n */\nexport function getPetUrl({\n  id,\n  type,\n  ownerType,\n  url,\n  source,\n}: IGetPetUrl): string {\n  if (source) {\n    if (url?.includes('/redirecting?')) {\n      return url;\n    }\n    const params = new URLSearchParams();\n    params.append('partner', source.toLowerCase());\n    if (url?.includes('http')) {\n      params.append('url', url);\n    }\n    if (!url) {\n      params.append('url', '/');\n    }\n    return `${getBasePath()}/redirecting?${params.toString()}`;\n  }\n\n  if (url) {\n    return url;\n  }\n\n  const idForRelativeLink = Number(id);\n  const ownerTypeForLink = ownerType === 'partner' ? 'user' : ownerType;\n  if (\n    Number.isNaN(idForRelativeLink) ||\n    type === 'sighting' ||\n    (ownerTypeForLink !== 'user' && ownerTypeForLink !== 'awo')\n  ) {\n    throw new Error(\n      `Cannot build details URL for pet ${id} with type ${type} and ownerType ${ownerType}`\n    );\n  }\n\n  return getPetUrlPath({\n    id: idForRelativeLink,\n    searchType: type,\n    ownerType: ownerTypeForLink,\n  });\n}\n","/* eslint-disable jsdoc/tag-lines */\n/**\n * Helper function used to append a key:value pair to an object definition if\n * the value is not undefined.\n *\n * @example\n *   const isUndefined = undefined;\n *\n *   const objectWithNoUndefinedValues = {\n *     key1: 'value1',\n *     ...appendAttributeIfExists('newKey', 'not sure if is not undefined'),\n *     ...appendAttributeIfExists('newKeyUndefined', isUndefined),\n *   };\n *\n *   // result { key1:'value1', newKey: 'not sure if is not undefined' }\n *\n * @param {string} key - The key of the key:value pair\n * @param {unknown} value - The value of the key:value pair\n * @returns {object} - The object used to append to the object definition\n */\nconst appendAttributeIfExists = (\n  key: string,\n  value: unknown\n): { [key: string]: unknown } => (value !== undefined ? { [key]: value } : {});\n\nexport default appendAttributeIfExists;\n","import { ContentfulClientApi, createClient } from 'contentful';\n/**\n * The Contentful client configuration object.\n * This configuration is used to create an instance of the Contentful client\n * that will be responsible for making API calls to the Contentful Content Delivery API.\n *\n * @property {string} space - The Contentful space ID, must be a non-null value.\n * @property {string} environment - The Contentful environment, must be a non-null value.\n * @property {boolean} retryOnError - If set to true, the client will retry requests that fail due to network errors.\n * @property {string} accessToken - Contentful access token, must be a non-null value.\n * @property {string} host - The API host URL of Contentful.\n */\n\nexport const contentful = createClient({\n  space: `${process.env.CONTENTFUL_SPACE_ID}`,\n  environment: `${process.env.CONTENTFUL_ENVIRONMENT}`,\n  retryOnError: true,\n  accessToken: `${process.env.CONTENTFUL_ACCESS_TOKEN}`,\n  host: 'cdn.contentful.com',\n});\n\nexport const contentfulPreview = createClient({\n  space: `${process.env.CONTENTFUL_SPACE_ID}`,\n  environment: `${process.env.CONTENTFUL_ENVIRONMENT}`,\n  accessToken: `${process.env.CONTENTFUL_ACCESS_TOKEN_PREVIEW}`,\n  host: 'preview.contentful.com',\n});\n\n/**\n * Returns a client based on the preview flag.\n *\n * @param {boolean} preview - A boolean flag indicating whether to use the\n *   preview client.\n * @returns {ContentfulClientApi} Contentful or contentfulPreview depending on\n *   the preview flag.\n */\nexport const getClient = (preview: boolean) => {\n  return preview ? contentfulPreview : contentful;\n};\n","import Heading from '@/components/atoms/Heading/Heading';\n\n/**\n * IShelterPageTitle - The props for the ShelterPageTitle component\n *\n * @interface IShelterPageTitle\n */\nexport interface IShelterPageTitle {\n  /**\n   * The shelter title.\n   *\n   * @memberof IShelterPageTitle\n   * @member {string} title\n   */\n  title: string;\n}\n\n/**\n * ShelterPageTitle Shelter Page Title Component\n *\n * @param {IShelterPageTitle} props - The props for the ShelterPageTitle\n *   component\n * @returns {React.FC<IShelterPageTitle>} ShelterPageTitle Component\n */\nconst ShelterPageTitle: React.FC<IShelterPageTitle> = ({\n  title,\n}: IShelterPageTitle) => {\n  return (\n    <div\n      className=\"w-full bg-base-100 flex justify-center text-center\"\n      data-testid=\"shelter-page-title\"\n    >\n      <div className=\"sm:grid sm:grid-cols-6 md:grid-cols-12 gap-x-4 sm:gap-x-6 md:gap-x-8 max-w-[1440px] px-6 sm:px-8 md:px-10\">\n        <Heading\n          size=\"h1\"\n          font=\"petco\"\n          className=\"text-neutral-800 sm:py-16 py-12 col-start-2 col-span-4 md:col-start-4 md:col-span-6\"\n        >\n          {title}\n        </Heading>\n      </div>\n    </div>\n  );\n};\n\nexport default ShelterPageTitle;\n","import Button, { IButton } from '@/components/atoms/Button/Button';\nimport Heading from '@/components/atoms/Heading/Heading';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport { ICardArticle } from '@/components/molecules/CardArticle/CardArticle';\nimport ShelterPageTitle from '@/components/molecules/ShelterPageTitle/ShelterPageTitle';\nimport ArticlesDisplay from '@/components/organisms/ArticlesDisplay/ArticlesDisplay';\nimport PageWrapper from '@/components/organisms/PageWrapper/PageWrapper';\nimport ShelterContactInformation from '@/components/organisms/ShelterContactInformation/ShelterContactInformation';\n\nimport useWindowSize from '@/component-library-lib/hooks/windowSize/WindowSize';\nimport getPetUrlPath from '@/lib/utils/getPetUrlPath/getPetUrlPath';\nimport Link from 'next/link';\nimport { useEffect, useState } from 'react';\n\n/**\n * The pet listing type. Awo pet listing type is 'foundOrgPet'\n *\n * @constant {string}\n */\nconst awoPetListingType = 'foundOrgPet';\n\n/**\n * IShelterDetails\n *\n * Used to define the text content for the Shelter Details\n *\n * @interface\n */\nexport interface IShelterDetails {\n  /** The shelter name */\n  name: string;\n  /** The shelter address */\n  address: string;\n  /** The shelter phone number */\n  phone: string;\n  /** The shelter email */\n  email: string;\n  /** The shelter website */\n  websiteUrl?: string;\n}\n\n/**\n * IShelterDetailsTemplateContent\n *\n * Used to define the text content for the Shelter Details Template\n *\n * @interface\n */\nexport interface IShelterDetailsTemplateContent {\n  /** The Article Display Component content */\n  articlesDisplay: {\n    /** The title for the Article Display Component */\n    title: string;\n  };\n  /** The link content */\n  shelterContent: {\n    /** The link content when accessing from a reclaim */\n    reclaim: {\n      /** The link title */\n      title: string;\n    };\n    /** The link content when NOT accessing from a reclaim */\n    other: {\n      /** The link title */\n      title: string;\n      /** Buttons content */\n      buttons: {\n        /** Lost pet button text */\n        lostPet: string;\n        /** Found pet button text */\n        foundPet: string;\n      };\n    };\n  };\n  /** The Shelter Contact Information Component content */\n  shelterContactInformation: {\n    /** The Shelter Contact Information Component overline */\n    overline: string;\n  };\n}\n\n/**\n * IShelterDetailsTemplate\n *\n * @interface\n */\nexport interface IShelterDetailsTemplate {\n  /** The articles to display */\n  articles: ICardArticle[];\n  /** Text content */\n  content: IShelterDetailsTemplateContent;\n  /** The shelter details */\n  shelterDetails: IShelterDetails;\n  /** The optional listing id */\n  listingId?: number;\n}\n\n/**\n * ShelterDetailsTemplate - This is the template to display shelter details\n *\n * @param {IShelterDetailsTemplate} props - The props for the\n *   ShelterDetailsTemplate component\n * @returns {React.FC<IShelterDetailsTemplate>} Component\n */\nconst ShelterDetailsTemplate: React.FC<IShelterDetailsTemplate> = ({\n  articles,\n  content,\n  shelterDetails,\n  listingId,\n}) => {\n  const size = useWindowSize();\n  const [fullWidthButton, setFullWidthButton] = useState(false);\n\n  /**\n   * Monitor the Breakpoint that is being used and set the fullWidthButtons\n   * state\n   */\n  useEffect(() => {\n    if (size.breakpoint === 'xs') {\n      setFullWidthButton(true);\n    } else {\n      setFullWidthButton(false);\n    }\n  }, [size.breakpoint]);\n\n  /**\n   * Buttons to display when the page is not accessed from a reclaim link\n   *\n   * @constant\n   */\n  const buttons: IButton[] = [\n    {\n      children: content.shelterContent.other.buttons.lostPet,\n      type: 'button',\n      size: 'md',\n      variant: 'light',\n      color: 'primary',\n      href: '/i-lost-a-pet/',\n    },\n    {\n      children: content.shelterContent.other.buttons.foundPet,\n      type: 'button',\n      size: 'md',\n      variant: 'light',\n      color: 'secondary',\n      href: '/i-found-a-pet/',\n    },\n  ];\n\n  return (\n    <div data-testid=\"shelter-details-template\">\n      <ShelterPageTitle title={shelterDetails.name} />\n      <PageWrapper classes=\"mb-12 md:mb-20 px-6 sm:px-8 md:px-10\">\n        <div className=\"block my-10 text-center sm:grid sm:grid-cols-6 sm:my-12 md:grid-cols-12 md:my-16 gap-x-4 sm:gap-x-6 md:gap-x-8\">\n          <div className=\"col-start-2 col-span-4 md:col-start-4 md:col-span-6\">\n            <Heading size=\"h2\" font=\"amasis\">\n              {listingId\n                ? content.shelterContent.reclaim.title\n                : content.shelterContent.other.title}\n            </Heading>\n            <Paragraph size=\"body4\" className=\"mt-4\">\n              {listingId ? (\n                <>\n                  Please contact the shelter immediately and save this{' '}\n                  <Link\n                    href={getPetUrlPath({\n                      id: listingId,\n                      listingType: awoPetListingType,\n                      excludeBasePath: true,\n                    })}\n                    className=\"underline\"\n                  >\n                    {\"pet's listing\"}\n                  </Link>{' '}\n                  for when you reclaim your pet. We do not notify the shelter\n                  that this is your pet\n                </>\n              ) : (\n                <>\n                  Search 100,000+ pets using our free lost and found pet\n                  database to reunite with your pet or to help a pet you found\n                  get back to its owner.\n                </>\n              )}\n            </Paragraph>\n            {!listingId && (\n              <div className=\"flex flex-col justify-center space-y-[21px] sm:flex-row sm:space-y-0 sm:space-x-6 md:space-x-8  mt-8\">\n                {buttons.map((button, index) => {\n                  return (\n                    <Button\n                      key={index}\n                      {...button}\n                      fullWidth={fullWidthButton}\n                    />\n                  );\n                })}\n              </div>\n            )}\n          </div>\n          <ShelterContactInformation\n            overline={\n              listingId ? content.shelterContactInformation.overline : ''\n            }\n            name={shelterDetails.name}\n            address={shelterDetails.address}\n            phone={shelterDetails.phone}\n            email={shelterDetails.email}\n            website={shelterDetails.websiteUrl}\n            classes=\"col-start-2 col-span-4 md:col-start-3 md:col-span-8 mt-10 sm:mt-12 md:mt-16\"\n          />\n        </div>\n        <ArticlesDisplay\n          articles={articles}\n          title={content.articlesDisplay.title}\n          classes=\"mb-12 md:mb-20\"\n        />\n      </PageWrapper>\n    </div>\n  );\n};\n\nexport default ShelterDetailsTemplate;\n","\n/**\n * A mapping of US state names to their corresponding state codes.\n */\nexport const usStateCodes: Record<string, string> = {\n  Alabama: 'AL',\n  Alaska: 'AK',\n  Arizona: 'AZ',\n  Arkansas: 'AR',\n  California: 'CA',\n  Colorado: 'CO',\n  Connecticut: 'CT',\n  Delaware: 'DE',\n  'District of Columbia': 'DC',\n  Florida: 'FL',\n  Georgia: 'GA',\n  Hawaii: 'HI',\n  Idaho: 'ID',\n  Illinois: 'IL',\n  Indiana: 'IN',\n  Iowa: 'IA',\n  Kansas: 'KS',\n  Kentucky: 'KY',\n  Louisiana: 'LA',\n  Maine: 'ME',\n  Maryland: 'MD',\n  Massachusetts: 'MA',\n  Michigan: 'MI',\n  Minnesota: 'MN',\n  Mississippi: 'MS',\n  Missouri: 'MO',\n  Montana: 'MT',\n  Nebraska: 'NE',\n  Nevada: 'NV',\n  'New Hampshire': 'NH',\n  'New Jersey': 'NJ',\n  'New Mexico': 'NM',\n  'New York': 'NY',\n  'North Carolina': 'NC',\n  'North Dakota': 'ND',\n  Ohio: 'OH',\n  Oklahoma: 'OK',\n  Oregon: 'OR',\n  Pennsylvania: 'PA',\n  'Rhode Island': 'RI',\n  'South Carolina': 'SC',\n  'South Dakota': 'SD',\n  Tennessee: 'TN',\n  Texas: 'TX',\n  Utah: 'UT',\n  Vermont: 'VT',\n  Virginia: 'VA',\n  'Virgin Islands': 'VI',\n  Washington: 'WA',\n  'West Virginia': 'WV',\n  Wisconsin: 'WI',\n  Wyoming: 'WY',\n};\n","/**\n * Abbreviates some parts of the address.\n *\n * For example, '1234 Main Street' becomes '1234 Main St.', '1234 Main Road'\n * becomes '1234 Main Rd.', etc.\n *\n * @param {string} address - The address to abbreviate\n * @returns {string} The abbreviated address\n */\nexport function abbreviateAddress(address?: string) {\n  if (!address) {\n    return '';\n  }\n\n  const abbreviations: { [key: string]: string } = {\n    Street: 'St.',\n    Road: 'Rd.',\n    Avenue: 'Ave.',\n    Boulevard: 'Blvd.',\n    Drive: 'Dr.',\n    Lane: 'Ln.',\n    Terrace: 'Terr.',\n    Place: 'Pl.',\n    Court: 'Ct.',\n  };\n\n  let abbreviatedAddress = address;\n\n  Object.keys(abbreviations).forEach((word) => {\n    const regex = new RegExp('\\\\b' + word + '\\\\b', 'i');\n    abbreviatedAddress = abbreviatedAddress.replace(regex, abbreviations[word]);\n  });\n\n  return abbreviatedAddress;\n}\n","import { sdk } from '@/lib/dataSource/lostApi/common';\nimport { IAwoLegacyContextLegacyIdResponseData } from '@petcolove/lost--client--api-sdk/dist/concrete/sdks/services/awo/legacyContext/interfaces';\n\n/**\n * Function to check if the awo is manual from the legacy context\n *\n * @param {string} legacyId - The legacy id\n * @returns {Promise<IAwoLegacyContextLegacyIdResponseData>} The response\n */\nexport async function getAwoEntityId(\n  legacyId: string\n): Promise<IAwoLegacyContextLegacyIdResponseData> {\n  try {\n    const { data } = await sdk.publicAwoLegacyContext({}).legacyId(legacyId);\n    return data;\n  } catch (error) {\n    console.error(error);\n    throw error;\n  }\n}\n","/**\n * Converts a hexadecimal string to a string\n *\n * @param {string} hexadecimal - The hexadecimal string to convert\n * @returns {string} Str\n */\nexport default function hexadecimalToString(hexadecimal: string): string {\n  try {\n    return decodeURIComponent(hexadecimal.replace(/(..)/g, '%$1'));\n  } catch (e) {\n    console.error(e);\n\n    throw new Error(`invalid hex input: ${hexadecimal}`);\n  }\n}\n","/* eslint-disable jsdoc/tag-lines */\nimport { contentful } from '@/component-library-lib/dataSource/contentful/client';\nimport { Topics } from '@/component-library-lib/dataSource/contentful/models/topics';\nimport { ICardArticle } from '@/components/molecules/CardArticle/CardArticle';\nimport Head from '@/components/templates/Head/Head';\nimport ShelterDetailsTemplate, {\n  IShelterDetails,\n} from '@/components/templates/ShelterDetailsTemplate/ShelterDetailsTemplate';\nimport { shelterDetailsArticlesSlugNames } from '@/lib/constants/constants/articles';\nimport { usStateCodes } from '@/lib/constants/constants/us-states';\nimport Article, { IContent } from '@/lib/dataSource/content/article';\nimport { abbreviateAddress } from '@/lib/dataSource/location/abbreviateAddress';\nimport getLocationLabel from '@/lib/dataSource/location/getLocationLabel';\nimport { getAwoEntityId } from '@/lib/dataSource/lostApi/awo/legacyContext/legacyId';\nimport { getAwoDetails } from '@/lib/dataSource/lostApi/awos/details';\nimport hexadecimalToString from '@/lib/utils/helpers/legacy/hexadecimalToString';\nimport stringToSlug from '@/lib/utils/helpers/legacy/stringToSlug';\nimport appendAttributeIfExists from '@/lib/utils/helpers/ObjectsHelpers/AppendAttributeIfExists';\nimport { addHttps } from '@/lib/utils/stringReplace/addHttps';\nimport { ArticleProps } from '@/pages/articles/[slug]';\nimport { documentToReactComponents } from '@contentful/rich-text-react-renderer';\nimport { IServiceMethodResponse } from '@petcolove/lost--client--api-sdk/dist/abstract/service/interfaces';\nimport { IAWODetailsDTO } from '@petcolove/lost--client--api-sdk/dist/concrete/sdks/services/awo/details/dto';\nimport { GetServerSideProps, GetServerSidePropsContext, NextPage } from 'next';\n\n/**\n * IShelterDetailsPageMeta The Article Page Meta Interface for the Shelter\n * Details Page.\n *\n * @interface\n */\ninterface IShelterDetailsPageMeta {\n  /** The title of the page */\n  title: string;\n  /** The description of the page */\n  description: string;\n}\n\n/**\n * IArticlePage The Article Page Interface for the Shelter Details Page.\n *\n * @interface\n */\ninterface IShelterDetailsPage {\n  /** The articles to display */\n  articles: ICardArticle[];\n  /** The city and state of the shelter */\n  locationName: string;\n  /** The meta data for the page */\n  meta: IShelterDetailsPageMeta;\n  /** The shelter details */\n  shelterDetails: IShelterDetails;\n  /** The optional listing id */\n  listingId?: number;\n}\n\n/**\n * Shelter details looks for query params and renders the appropriate reclaim\n * status\n *\n * @example\n *   /shelters/shelter-name/1 will render the shelter details page with reclaim status false\n *   /shelters/shelter-name/1?listing=2 will render the shelter details page with reclaim status true\n *\n * @param {IShelterDetails} props - The props of the Article Page Component.\n * @returns {NextPage<IShelterDetails>} Shelter Details Page\n */\nconst ShelterDetails: NextPage<IShelterDetailsPage> = ({\n  articles,\n  locationName,\n  meta,\n  shelterDetails,\n  listingId,\n}: IShelterDetailsPage) => {\n  return (\n    <section className=\"mx-auto\" data-testid=\"shelter-details-page\">\n      <Head {...meta} />\n      <ShelterDetailsTemplate\n        articles={articles}\n        shelterDetails={shelterDetails}\n        content={{\n          articlesDisplay: {\n            title: 'Helpful Articles',\n          },\n          shelterContent: {\n            reclaim: {\n              title: \"Let's get your pet home!\",\n            },\n            other: {\n              title: `Search pets near ${locationName}`,\n              buttons: {\n                lostPet: 'I Lost a Pet',\n                foundPet: 'I Found a Pet',\n              },\n            },\n          },\n          shelterContactInformation: {\n            overline: 'This pet is located at',\n          },\n        }}\n        listingId={listingId}\n      />\n    </section>\n  );\n};\nexport default ShelterDetails;\n\n/**\n * Redirects to the home page if the user is not authenticated\n *\n * @param {GetServerSidePropsContext} context - The request object\n * @returns {GetServerSideProps} - The props object\n */\nexport const getServerSideProps = async ({\n  params,\n  query,\n}: GetServerSidePropsContext): GetServerSideProps => {\n  try {\n    /**\n     * The array of slugs and ids from the url\n     *\n     * @property {string} slug - The slug value.\n     * @property {string} id - The id value.\n     */\n    const { id } = params;\n    /**\n     * @property {number} listing - The listingId if the request is coming from\n     *   a listing page\n     */\n    const { listing } = query;\n    /**\n     * Wether if the request is coming from a legacy shelter url or not.\n     *\n     * @constant {boolean} isLegacyShelter - If the request is coming from a\n     */\n    const fromLegacyUrl = isFromLegacyUrl(id);\n\n    /**\n     * The shelter id.\n     *\n     * @constant {number} shelterId - The shelter id from the context\n     */\n    const shelterId = fromLegacyUrl\n      ? await getEntityIdFromLegacyId(id)\n      : parseInt(params.id);\n\n    if (!shelterId) {\n      return {\n        notFound: true,\n      };\n    }\n\n    /** The awo details. */\n    const awo: IAWODetailsDTO = await getAwoDetails(shelterId);\n\n    const { name, status } = awo;\n\n    if (status !== 'active') {\n      return {\n        notFound: true,\n      };\n    }\n\n    /**\n     * The shelter name as a slug\n     *\n     * @constant {string} shelterNameSlug - The shelter name as a slug\n     */\n    const shelterSlugName = stringToSlug(name);\n\n    /**\n     * If the request is coming from a legacy url, we will try to redirect to\n     * the right url only if the slug is the same as the shelter name,\n     * otherwise, we will redirect to the 404 page\n     */\n    if (fromLegacyUrl)\n      return getServerSidePropsForLegacyUrl(shelterId, shelterSlugName);\n\n    return await getServerSidePropsForShelter(awo, listing);\n  } catch (error) {\n    console.error(error);\n\n    if ((error as IServiceMethodResponse)?.statusCode === 404) {\n      return {\n        notFound: true,\n      };\n    }\n\n    throw error;\n  }\n};\n\n/**\n * Whether if the request is coming from a legacy url or not. The legacy id is a\n * decimal or hexadecimal value of exactly 20 characters.\n *\n * @example\n *   /shelters/name-of-the-shelter/387a647349513657424f -> legacy url (hex)\n *   /shelters/name-of-the-shelter/38746473495136574241 -> legacy url (dec)\n *   /shelters/name-of-the-shelter/123 -> not a legacy url\n *\n * @param {string} id - The awo legacy id or entity id\n * @returns {boolean} - If the request is coming from a legacy url or not\n */\nexport const isFromLegacyUrl = (id: string): boolean => {\n  return id.length === 20;\n};\n\n/**\n * Get the legacy shelter id from the slug\n *\n * @param {string} encodedLegacyId - The encoded legacy id\n * @returns {Promise<number>} - The legacy shelter id\n */\nexport const getEntityIdFromLegacyId = async (\n  encodedLegacyId: string\n): Promise<number | undefined> => {\n  try {\n    /**\n     * The decoded legacy id\n     *\n     * @constant {string} legacyId - The decoded legacy id\n     */\n    const legacyId = hexadecimalToString(encodedLegacyId);\n    /**\n     * The awo entity id\n     *\n     * @property {number} awoEntityId - The awo entity id\n     */\n    const { awoEntityId } = await getAwoEntityId(legacyId);\n\n    return awoEntityId;\n  } catch (error) {\n    console.error(error);\n\n    return;\n  }\n};\n\n/**\n * Handle server side props for legacy urls\n *\n * @param {number} shelterId - The entity id of the legacy shelter\n * @param {string} shelterSlugName - The original slug name of the shelter\n * @returns {GetServerSideProps} - The props object\n */\nexport const getServerSidePropsForLegacyUrl = (\n  shelterId: number,\n  shelterSlugName: string\n): GetServerSideProps => {\n  return {\n    props: {},\n    redirect: {\n      destination: `/shelters/${shelterSlugName}/${shelterId}`,\n      permanent: false,\n    },\n  };\n};\n\n/**\n * Handle server side props for shelter details\n *\n * @param {IAWODetailsDTO} awo - The awo details\n * @param {string} [listing] - The listing id\n * @returns {GetServerSideProps} - The props object\n */\nexport const getServerSidePropsForShelter = async (\n  awo: IAWODetailsDTO,\n  listing?: string\n): Promise<GetServerSideProps> => {\n  /**\n   * The shelter details\n   *\n   * @property {string | null} [location] - The location of the shelter\n   * @property {string} [name] - The name of the shelter\n   * @property {string} [phoneNumber] - The phone number of the shelter\n   * @property {string} [contactEmail] - The contact email of the shelter\n   */\n  const { location, name, phoneNumber, contactEmail, websiteUrl } = awo;\n\n  /** Throw an error if the required data to display the page is missing */\n  if (!location || !name) throw new Error('Missing location or name');\n\n  const dataArticles = await contentful.withoutUnresolvableLinks.getEntries<\n    Topics['Article']\n  >({\n    content_type: 'article',\n    'fields.slugs[in]': shelterDetailsArticlesSlugNames,\n    locale: 'en-US',\n    include: 10,\n  });\n\n  const articles = dataArticles.items.map((item: ArticleProps) => {\n    const displayDate = new Date(item.fields.publishDate);\n    const articleContent = {\n      title: item.fields.headline,\n      slug: item.fields.slugs,\n      contentBody: documentToReactComponents(item.fields.copy),\n      excerpt: item.fields.excerpt,\n      authorName: item.fields.author?.fields.name,\n      authorSlug: item.fields.author?.fields.slugs,\n      categoryId: item.fields.context,\n      featuredPhoto: addHttps(item.fields.featuredImage?.fields?.file?.url),\n      publishedDate: displayDate,\n    } as IContent;\n    return new Article(articleContent);\n  });\n\n  /**\n   * Get the card article object from the article object\n   *\n   * @constant {ICardArticle[]} helpfulArticles - Articles cards for the\n   *   articles display component\n   */\n  const helpfulArticles = articles\n    .map((article) => article.getCardArticle())\n    .filter((article) =>\n      Object.values(article).every((value) => value !== undefined)\n    );\n  /**\n   * The location address components\n   *\n   * @property {string} streetAddress - The street address\n   * @property {string} postalCode - The postal code\n   * @property {string} region - The region\n   * @property {string} country - The country\n   */\n  const {\n    streetAddress: address,\n    postalCode: zip,\n    region: state,\n    city,\n  } = location;\n\n  /**\n   * The shelter details\n   *\n   * @constant {IShelterDetails} shelterDetails - The shelter details\n   */\n  const shelterDetails = {\n    name: name,\n    address: getLocationLabel({\n      address: abbreviateAddress(address),\n      city,\n      zip,\n      state: usStateCodes[state] || state,\n    }),\n    ...appendAttributeIfExists('email', contactEmail),\n    ...appendAttributeIfExists('phone', phoneNumber),\n    ...appendAttributeIfExists('websiteUrl', websiteUrl),\n  };\n\n  /**\n   * The name of the shelter location\n   *\n   * @constant {string} locationName - The location name\n   */\n  const locationName = `${location?.city}, ${location?.region}`;\n\n  /**\n   * The meta object for the page\n   *\n   * @constant {IShelterDetailsPageMeta} meta - The meta data for the page\n   */\n  const meta: IShelterDetailsPageMeta = {\n    title: `${shelterDetails.name}`,\n    description: `Search lost and found pets neat ${shelterDetails.name} in ${locationName}. Find contact information for ${shelterDetails.name} at Petco Love Lost`,\n  };\n\n  return {\n    props: {\n      locationName,\n      meta,\n      articles: helpfulArticles,\n      shelterDetails: shelterDetails,\n      ...appendAttributeIfExists('listingId', listing),\n    },\n  };\n};\n"],"names":["window","__NEXT_P","push","__webpack_require__","__webpack_exports__","Z","children","from","to","delay","duration","className","param","ref","useRef","controls","useAnimation","inView","useInView","useEffect","start","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","motion","div","initial","animate","variants","hidden","opacity","visible","scale","translateX","translateY","transition","ease","cubicBezier","variantClasses","primary","light","dark","lightBlue","pink","secondary","tertiary","disabledStyles","removeFocusStyles","variant","href","as","disabled","replace","scroll","shallow","passHref","color","rest","variantStyles","cls","wrapperFocusStyles","concat","Link","src","width","quality","IconButton","label","icon","onClick","testid","jsxs","button","Icon","size","span","address","email","phone","emailSubject","website","classes","formattedPhone","test","formatPhoneNumber","open","CardArticle_CardArticle","title","excerpt","image","url","imageClasses","target","loader","jsx_runtime","Image","layout","alt","objectFit","sizes","Paragraph","ArticlesDisplay_ArticlesDisplay","articles","buttonLink","AnimateItem","Heading","font","ButtonLink","map","article","index","CardArticle","contentFulImageLoader","overline","name","styling","ContactOrganization","shelterDetailsArticlesSlugNames","foundSearchArticleSlugNames","lostSearchArticleSlugNames","microchipSearchArticlesSlugNames","unknownValue","baseAgeValues","Array","length","value","toString","petDropdownUnknownValue","ageValues","petSexDropdownValues","speciesDropdownValues","alteredDropdownValues","searchRadiusOptions","validStatus","petUrlPathOwnerTypes","user","awo","petUrlPathSearchTypes","lostUserPet","foundUserPet","foundOrgPet","ContentType","ContentStatus","Content","constructor","type","status","Article","getTitle","getFeaturedPhoto","featuredPhoto","getSlug","slug","getAuthorUrl","authorBasePath","authorSlug","getContent","contentBody","getFormattedPublishedDate","date","Date","publishedDate","toLocaleDateString","year","month","day","getArticleUrl","articlesBasePath","getCardArticle","authorName","categoryId","Published","zip","city","state","countryCode","placeLabel","placeLabelItems","undefined","forEach","item","str","sdk","initSDK","pllApiBaseUrl","process","pllWebsocketBaseUrl","PetcoLoveSDK","pattern","numericValue","formattedValue","substring","getOwnerTypeSegment","ownerType","listingType","toLowerCase","includes","getPetUrlPath","params","id","excludeBasePath","ownerTypeSegment","searchTypeSegment","getBasePath","searchType","petType","getPetUrl","source","URLSearchParams","append","idForRelativeLink","Number","ownerTypeForLink","isNaN","key","contentful","createClient","space","env","CONTENTFUL_SPACE_ID","environment","CONTENTFUL_ENVIRONMENT","retryOnError","accessToken","CONTENTFUL_ACCESS_TOKEN","host","CONTENTFUL_ACCESS_TOKEN_PREVIEW","ShelterPageTitle_ShelterPageTitle","ShelterDetailsTemplate_ShelterDetailsTemplate","content","shelterDetails","listingId","useWindowSize","fullWidthButton","setFullWidthButton","useState","breakpoint","buttons","shelterContent","other","lostPet","foundPet","ShelterPageTitle","PageWrapper","reclaim","Fragment","Button","fullWidth","ShelterContactInformation","shelterContactInformation","websiteUrl","ArticlesDisplay","articlesDisplay","usStateCodes","Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","Ohio","Oklahoma","Oregon","Pennsylvania","Tennessee","Texas","Utah","Vermont","Virginia","Washington","Wisconsin","Wyoming","getAwoEntityId","legacyId","data","publicAwoLegacyContext","error","_id_","locationName","meta","section","Head","ShelterDetailsTemplate","isFromLegacyUrl","getEntityIdFromLegacyId","encodedLegacyId","hexadecimalToString","hexadecimal","decodeURIComponent","e","awoEntityId","getServerSidePropsForLegacyUrl","shelterId","shelterSlugName","props","redirect","destination","permanent","getServerSidePropsForShelter","listing","location","phoneNumber","contactEmail","dataArticles","withoutUnresolvableLinks","getEntries","content_type","locale","include","items","displayDate","fields","publishDate","articleContent","headline","slugs","documentToReactComponents","copy","author","context","addHttps","featuredImage","file","helpfulArticles","filter","Object","values","every","streetAddress","postalCode","region","getLocationLabel","abbreviateAddress","abbreviations","Street","Road","Avenue","Boulevard","Drive","Lane","Terrace","Place","Court","abbreviatedAddress","keys","regex","word","appendAttributeIfExists","description"],"sourceRoot":""}